const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

const throttle = (fn, delay = 800) => {
  var startTime = new Date();
  return function(){
      var context = this;
      var args = arguments;
      var endTime = new Date();
      var resTime = endTime - startTime;
      //判断大于等于我们给的时间采取执行函数;
      if(resTime >= delay){
          fn.apply(context, args);
          //执行完函数之后重置初始时间，等于最后一次触发的时间
          startTime = endTime;
      }
  }
}

function insertScreenAD(adUnitId) {
  // 在页面中定义插屏广告
  let interstitialAd = null

  // 在页面onLoad回调事件中创建插屏广告实例
  if (wx.createInterstitialAd) {
    interstitialAd = wx.createInterstitialAd({
      adUnitId: adUnitId
    })
    interstitialAd.onLoad(() => {})
    interstitialAd.onError((err) => {})
    interstitialAd.onClose(() => {})
  }

  // 在适合的场景显示插屏广告
  if (interstitialAd) {
    interstitialAd.show().catch((err) => {
      console.error(err)
    })
  }
}

function stimulateAD (adUnitId, cb, toastTitle) {
  // 在页面中定义激励视频广告
  let videoAd = null

  // 在页面onLoad回调事件中创建激励视频广告实例
  if (wx.createRewardedVideoAd) {
    videoAd = wx.createRewardedVideoAd({
      adUnitId: adUnitId
    })
    videoAd.onLoad(() => {})
    videoAd.onError((err) => {})
    videoAd.onClose((res) => {
      if(!videoAd) return
      videoAd.offClose()
      // 用户点击了【关闭广告】按钮
      if (res && res.isEnded) {
        // 正常播放结束，可以下发游戏奖励
        // onShowModal('difpic')
        typeof cb === 'function' ? cb.call(this) : ''
      } else {
        // 播放中途退出，不下发游戏奖励
        wx.showToast({
          title: toastTitle || '请观看完广告',
          icon: 'none',
          duration: 2000
        })
      }
    })
  }

  // 用户触发广告后，显示激励视频广告
  if (videoAd) {
    videoAd.show().catch(() => {
      // 失败重试
      videoAd.load()
        .then(() => videoAd.show())
        .catch(err => {
          console.log('激励视频 广告显示失败')
        })
    })
  }
}

module.exports = {
  formatTime: formatTime,
  throttle: throttle,
  insertScreenAD: insertScreenAD,
  stimulateAD: stimulateAD,
}
